/*
 * @Author: liuxiao
 * @Date: 2023-11-27 00:30:40
 * @Last Modified by: liuxiao
 * @Last Modified time: 2023-12-14 00:39:12
 * @ps:app层，导入koa，导入路由，统一错误处理
 */
//导入Node的path模块
const path = require('path')
const Koa = require('koa')
//导入koa-body
const { koaBody } = require('koa-body')
//导入koa-stacit
const KoaStatic = require('koa-static')

//导入参数校验插件
const parameter = require('koa-parameter')
//console.log(KoaStatic)

//导入错误处理函数
const errHandler = require('./errHandler')

const app = new Koa()

//用户相关路由
//const userRouter = require('../router/user.route')
//课程相关路由
//const courseRoute  = require('../router/course.route')

const router = require('../router')
//导入模型
//require('../model/index')

console.log(process.cwd())
//导入koaBody
app.use(
  koaBody({
    multipart: true,
    formidable: {
      //   //在配置选项option，不推荐使用相对路径
      //   //在option里的相对路径不是，不是相对的当前文件，相对process.cwd()
      //   //如果想要使用相对路径，则要写成'./src/upload'，推荐使用绝对路径
      //   uploadDir: path.join(__dirname, '../upload'),
      //   //保持后缀名
      keepExtensions: true
    }
  })
)

//配置静态资源的路径
app.use(KoaStatic(path.join(__dirname, '../upload')))
//使用所有的路由规则,
app.use(router.routes()).use(router.allowedMethods())
//在app原型上注册了一个方法
app.use(parameter(app))

//导入路由
// app.use(userRouter.routes())
// app.use(courseRoute.routes())

//统一的错误处理,接受到emit发出的参数，
app.on('error', errHandler)

module.exports = app
